草庐IT

ARM64 UBFX

全部标签

c++ - GCC arm-none-eabi (Codesourcery) 和 C++ 异常

我正在使用Raisonance的Ride7/Codesourcery(又名SourceryCodeBenchLite)和一blockSTM32F4板来开发裸机HMI平台。我将在此系统中使用C++异常,但我抛出的任何异常都以写入stderr的“递归调用终止”错误结束。重现问题的代码:(main.cpp)intmain(void){try{throw1;}catch(...){printf("caught");}}我已经尝试过Raisonance和其他资源来寻求解决方案,但没有收到任何可操作的帮助。潜在问题/解决方案1:我在其他论坛上问过,他们提到我需要在我的启动程序集文件中调用静态构造来

c++ - 使用 32 位 Mersenne Twister 生成 64 位值

根据thisBoostdocumentationpage,MersenneTwister的64位变体比其32位对应变体慢得多(这是有道理的)。据我了解,C++11引入的很多特性,包括随机数生成,基本上都是标准库中的Boost。这使我相信标准C++中的32位MT性能也更好。我正在编写一个光线追踪器(主要是为了好玩),速度是我最关心的问题之一。基本上所有数值都表示为doublefloat。我的问题是,由于32位MT速度相当快,我可以用它来生成double吗?我会遇到哪些缺点(精度损失、性能等)? 最佳答案 为此,我添加了一个您未提及的假

c++ - 在 ARM 平台上正确检测混合端浮点格式

我最近遇到了第三方库的问题,该库使用以下代码在ARM平台上测试混合端浮点格式:#ifdefined(__arm__)&&!(__ARM_EABI__)此检查在Android平台上错误地检测到混合端格式,但在iOS平台上工作正常。经过一番研究,我发现debianArmEabiPortdocument在GCC浮点预处理器宏部分中包含以下内容(强调我的):Whenportingcodeto"armel",thefollowingpreprocessormacrosareinteresting:__VFP_FP__meansthatthefloatingpointformatinuseisth

c++ - 在 ARM 上使用 Qt 的简单程序中的段错误

我正在尝试在ARM系统上使用Qt4.7.4,以便在触摸屏上显示图形应用程序。我的ARM卡内嵌了Linux系统;我们使用Linuxframebuffer向屏幕发送信息,tslib+usbtouchscreen驱动获取触摸信息。我能够交叉编译Qt并将库放在我的系统上。但是当我启动我的测试程序时,我每次都在同一时刻遇到段错误(没有逻辑原因)。首先,这是我的测试程序(你可以看到它非常基础,没有理由出现段错误):#include#includeintmain(intargc,char*argv[]){QApplicationapp(argc,argv);QMessageBoxmsgBox;msg

c++ - 无法在 x86 上以 SSE 类型访问内存,但在 x64 上工作正常

我有一些使用MSVCSSE内在函数编写的代码。__m128zero=_mm_setzero_ps();__m128center=_mm_load_ps(&sphere.origin.x);__m128boxmin=_mm_load_ps(&rhs.BottomLeftClosest.x);__m128boxmax=_mm_load_ps(&rhs.TopRightFurthest.x);__m128e=_mm_add_ps(_mm_max_ps(_mm_sub_ps(boxmin,center),zero),_mm_max_ps(_mm_sub_ps(center,boxmax),ze

c# - 组合 C# 和 C++ 项目适用于 x86 和 x64,但不适用于 ARM

我的解决方案中有两个项目。一个是C#通用应用程序,另一个是C++项目(从here获得)并重新定位到Windows8.1(这是在我导入项目时由VisualStudio15执行的)。我从我的C#项目中引用了C++项目,并将CopyLocal设置为true。代码构建完美适用于所有三个平台(x86、x64和ARM)。但是,当部署到ARM设备时,在我尝试访问C++代码的行上抛出了一个异常。在x86和x64版本上,这不是问题,代码工作得很好。异常是System.IO.FileNotFoundException和hereisapastebinoftheexceptionindetail.我对这个异常

c++ - 同一台机器上的 libstdc++ 64 位和 32 位版本

我正在尝试为64位平台交叉编译我的软件版本。我可以在同一台机器上安装32位和64位版本的libstdc++而不必担心破坏我的linux安装吗?操作系统是32位的ubuntu。我之前没有交叉编译过,只是想检查一下我是否设置了CFLAGS和LDFLAGS对于合适的CPU,一旦我安装了正确版本的libstdc++,我应该没问题。我检查了64位版本的ubuntu,但是它有一个符号链接(symboliclink)lib64->库如果在32位机器上也是这种情况,这会搞砸很多,有人知道如何排序吗?我现在遇到以下错误[exec]/usr/bin/ld:skippingincompatible/usr/

c++ - 免费的基于 C/C++ 的 zip/zip64 库?

在使用poco的zip和minizip错误启动后(两者都有问题,minizip无法解压缩大于2gb的文件,而pocozip会破坏它压缩的大于2gig的任何zip文件)我想知道是否还有其他东西?那么对于可以处理zip和zip64的C++存档库有什么建议吗? 最佳答案 7-zip可以处理这两种情况,据我快速浏览一下它们的源代码可以看出。它也是LGPL,应该允许在闭源应用程序中使用它。 关于c++-免费的基于C/C++的zip/zip64库?,我们在StackOverflow上找到一个类似的问

c++ - 检索 x64 masm 汇编过程的参数

我有一个带有签名的函数:extern"C"intfoo(inta,intb,intc,intd,inte);实际上是用汇编写的。使用ml(32位),使用标准调用约定,您几乎可以编写.codefooPROCa:DWORD,b:DWORD,c:DWORD,d:DWORD,e:DWORDmoveax,dmovebx,e并开始使用这些标签来访问您的论点对于ml64(64位),fastcall是唯一可用的约定。我可以毫无问题地访问存储在寄存器中的第一个参数,但访问堆栈中的参数时会出现问题(本例中为e):我试过了.codefooPROCa:DWORD,b:DWORD,c:DWORD,d:DWORD

C++ 指向方法模板的推导在面向 x86 时无法编译,但适用于 x64

我有这个示例代码:structA{intfoo(){return27;}};templatestructGobstopper{};templatestructGobstopper{Gobstopper(int,int){}//TodifferentiatefromgeneralGobstoppertemplate};templatevoidDeduceMethodSignature(SignatureClassType::*method,ClassType&instance){//IfSignatureisint(),Gobstoppershouldresolvetothespecia